package com.soilflow.info.service;

import com.soilflow.common.core.domain.TreeSelect;
import com.soilflow.common.domain.LandClassify;
import com.baomidou.mybatisplus.extension.service.IService;
import com.soilflow.common.domain.dto.LandClassifyDto;
import com.soilflow.common.domain.vo.LandClassifyVo;

import java.util.List;
import java.util.Map;

/** 
@author dhp 
@date 2023/4/21 - 14:17
*/
 public interface LandClassifyService extends IService<LandClassify>{

    /**
     * 查询分类列表
     *
     * @param reliefClassify 分类
     * @return 分类集合
     */
     List<LandClassifyVo> pageList(LandClassifyDto reliefClassify);

    /**
     * 查询分类列表
     * @param
     * @return 分类集合
     */
     List<LandClassifyVo> findList();

    /**
     * 构建前端所需要下拉树结构
     *
     * @param reliefClassify 分类列表
     * @return 下拉树结构列表
     */
     List<TreeSelect> buildDeptTreeSelect(List<LandClassifyVo> reliefClassify);

    /**
     * 构建前端所需要树结构
     *
     * @param reliefClassify 帮扶对象分类
     * @return 树结构列表
     */
     List<LandClassifyVo> buildDeptTree(List<LandClassifyVo> reliefClassify);

    /**
     * 校验分类名称是否唯一
     *
     * @param reliefClassify 帮扶对象分类
     * @return 结果
     */
     String checkNameUnique(LandClassify reliefClassify);

    /**
     * 是否存在子节点
     *
     * @param id ID
     * @return 结果
     */
     boolean hasChildById(Long id);

    /**
     * 查询分类是否存在信息
     *
     * @param id ID
     * @return 结果 true 存在 false 不存在
     */
     boolean checkExistUser(Long id);


    /**
     * 添加获帮扶对象分类
     *
     * @param eliefClassify
     * @return 结果 true 存在 false 不存在
     */
     boolean add(LandClassify eliefClassify);

    /**
     * 删除帮扶对象分类
     */
     boolean deleteById(Long id);


    /**
     * 根据id和当前用户查询是否有权限修改
     *
     * @param id
     * @param userId 用户id
     * @return
     */
     boolean getExistence(Long id, Long userId);


    /**
     * 以分类名为key返回id
     * @param id
     * @return
     */
    Map<String, LandClassify> getLabelDicMap();

    /**
     * 以id为key返回分类名
     * @param id
     * @return
     */
    Map<Long, LandClassify> getValueDicMap();
}
